package com.mopon.clean;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.SystemUtils;

/**
 * 
 * <p>Description: 清理文件，使用系统命令行做删除</p>
 * @since 2016年6月15日
 * @author lenovo
 * @version 1.0
 * <p>Company:Mopon</p>
 * <p>Copyright:Copyright(c)2014</p>
 */
public class CleanFileAdvance {

	public static final String BACKUP_PATH = "/usr/local/mopon/backup";
	
	public static final String BACKUP_PATH_RECORD = "/usr/local/mopon/backup/paths.txt";
	
	public static final String WINDOW_DELETE_CMD = "cmd /c rd /s/q ";
	
	public static final String LINUX_DELETE_CMD = "rm -rf ";
	
	public static void main(String[] args) throws IOException, InterruptedException {
		ExecuteCmdCommand executeCmdCommand = new ExecuteCmdCommand();
		// 通过判断操作系统类型来给出命令
		String cmd = WINDOW_DELETE_CMD;
		if (SystemUtils.IS_OS_LINUX) {
			cmd = LINUX_DELETE_CMD;
		}
		
		// 创建备份文件目录
		File backupDir = new File(BACKUP_PATH);
		if (backupDir.exists()) {
//			FileUtils.deleteDir(backupDir);
			executeCmdCommand.callCmd(cmd + backupDir.getAbsolutePath());
		}
		backupDir.mkdirs();
		
		// 实际备份的文件路径
		List<String> backupPaths = new ArrayList<String>();
		
		// 把文件压缩备份到指定的目录中，再删除原文件
		List<String> dirs = getDirs();
		for (String path : dirs) {
			File dirFile = new File(path);
			if (dirFile.exists()) {
				backupPaths.add(path);
				String zipPath = BACKUP_PATH + "/" + dirFile.getParentFile().getName() + "_" + dirFile.getName() + ".zip";
				System.out.println(zipPath);
				FileUtils.zipMultiFile(path, zipPath, false);
//				FileUtils.deleteDir(dirFile);
				executeCmdCommand.callCmd(cmd + dirFile.getAbsolutePath());
			}
		}
		
		// 输出实际备份的文件路径
		if (!backupPaths.isEmpty()) {
			FileOutputStream out = null;
	        BufferedOutputStream bos=null;  
	        try {
	        	out = new FileOutputStream(BACKUP_PATH_RECORD);
	        	bos = new BufferedOutputStream(out);
	        	for (int i = 0; i < backupPaths.size(); i++)  {
					bos.write((backupPaths.get(i) + "\n").getBytes());
				}
	        	bos.flush();
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				if (bos != null) {
					bos.close();
				}
				
				if (out != null) {
					out.close();
				}
			}
		}
	}
	
	/**
	 * 
	 * 方法用途: 待清理的目录<br>
	 * 实现步骤: <br>
	 * @return
	 */
	public static List<String> getDirs() {
		List<String> dirs = new ArrayList<String>();
//		dirs.add("/usr/local/mopon/card_data/0001/1");
//		dirs.add("/usr/local/mopon/card_data/0001/2");
//		dirs.add("/usr/local/mopon/card_data/0001/3");
//		dirs.add("/usr/local/mopon/card_data/0001/4");
//		dirs.add("/usr/local/mopon/card_data/0001/5");
//		dirs.add("/usr/local/mopon/card_data/0001/6");
//		dirs.add("/usr/local/mopon/card_data/0001/7");
//		dirs.add("/usr/local/mopon/card_data/0001/8");
//		dirs.add("/usr/local/mopon/card_data/0001/10");
//		dirs.add("/usr/local/mopon/card_data/0001/15");
//		dirs.add("/usr/local/mopon/card_data/0001/16");
//		dirs.add("/usr/local/mopon/card_data/0001/17");
//		dirs.add("/usr/local/mopon/card_data/0001/18");
//		dirs.add("/usr/local/mopon/card_data/0001/19");
//		dirs.add("/usr/local/mopon/card_data/0001/20");
//		dirs.add("/usr/local/mopon/card_data/0001/21");
//		dirs.add("/usr/local/mopon/card_data/0001/23");
//		dirs.add("/usr/local/mopon/card_data/0001/25");
//		dirs.add("/usr/local/mopon/card_data/0001/554");
//		dirs.add("/usr/local/mopon/card_data/0001/555");
//		dirs.add("/usr/local/mopon/card_data/0001/556");
//		dirs.add("/usr/local/mopon/card_data/0001/557");
//		dirs.add("/usr/local/mopon/card_data/0001/559");
//		dirs.add("/usr/local/mopon/card_data/0001/560");
//		dirs.add("/usr/local/mopon/card_data/0001/561");
//		dirs.add("/usr/local/mopon/card_data/0001/562");
//		dirs.add("/usr/local/mopon/card_data/0001/576");
//		dirs.add("/usr/local/mopon/card_data/0001/579");
//		dirs.add("/usr/local/mopon/card_data/0001/581");
//		dirs.add("/usr/local/mopon/card_data/0001/583");
		
		dirs.add("/usr/local/mopon/card_data/0001_backup/609");
		dirs.add("/usr/local/mopon/card_data/0001_backup/610");
		dirs.add("/usr/local/mopon/card_data/0001_backup/676");
		dirs.add("/usr/local/mopon/card_data/0001_backup/677");
		dirs.add("/usr/local/mopon/card_data/0001_backup/707");
		dirs.add("/usr/local/mopon/card_data/0001_backup/732");
		dirs.add("/usr/local/mopon/card_data/0001_backup/742");
		dirs.add("/usr/local/mopon/card_data/0001_backup/745");
		dirs.add("/usr/local/mopon/card_data/0001_backup/770");
		dirs.add("/usr/local/mopon/card_data/0001_backup/771");
		dirs.add("/usr/local/mopon/card_data/0001_backup/772");
		dirs.add("/usr/local/mopon/card_data/0001_backup/773");
		dirs.add("/usr/local/mopon/card_data/0001_backup/774");
		dirs.add("/usr/local/mopon/card_data/0001_backup/775");
		dirs.add("/usr/local/mopon/card_data/0001_backup/776");
		dirs.add("/usr/local/mopon/card_data/0001_backup/777");
		dirs.add("/usr/local/mopon/card_data/0001_backup/778");
		dirs.add("/usr/local/mopon/card_data/0001_backup/779");
		dirs.add("/usr/local/mopon/card_data/0001_backup/780");
		dirs.add("/usr/local/mopon/card_data/0001_backup/782");
		dirs.add("/usr/local/mopon/card_data/0001_backup/783");
		dirs.add("/usr/local/mopon/card_data/0001_backup/784");
		dirs.add("/usr/local/mopon/card_data/0001_backup/785");
		dirs.add("/usr/local/mopon/card_data/0001_backup/786");
		dirs.add("/usr/local/mopon/card_data/0001_backup/787");
		dirs.add("/usr/local/mopon/card_data/0001_backup/788");
		dirs.add("/usr/local/mopon/card_data/0001_backup/789");
		dirs.add("/usr/local/mopon/card_data/0001_backup/790");
		dirs.add("/usr/local/mopon/card_data/0001_backup/791");
		dirs.add("/usr/local/mopon/card_data/0001_backup/792");
		dirs.add("/usr/local/mopon/card_data/0001_backup/793");
		dirs.add("/usr/local/mopon/card_data/0001_backup/794");
		dirs.add("/usr/local/mopon/card_data/0001_backup/795");
		dirs.add("/usr/local/mopon/card_data/0001_backup/796");
		dirs.add("/usr/local/mopon/card_data/0001_backup/797");
		dirs.add("/usr/local/mopon/card_data/0001_backup/798");
		dirs.add("/usr/local/mopon/card_data/0001_backup/799");
		dirs.add("/usr/local/mopon/card_data/0001_backup/800");
		dirs.add("/usr/local/mopon/card_data/0001_backup/801");
		dirs.add("/usr/local/mopon/card_data/0001_backup/802");
		dirs.add("/usr/local/mopon/card_data/0001_backup/803");
		dirs.add("/usr/local/mopon/card_data/0001_backup/804");
		dirs.add("/usr/local/mopon/card_data/0001_backup/806");
		dirs.add("/usr/local/mopon/card_data/0001_backup/807");
		dirs.add("/usr/local/mopon/card_data/0001_backup/808");
		dirs.add("/usr/local/mopon/card_data/0001_backup/809");
		dirs.add("/usr/local/mopon/card_data/0001_backup/810");
		dirs.add("/usr/local/mopon/card_data/0001_backup/811");
		dirs.add("/usr/local/mopon/card_data/0001_backup/812");
		dirs.add("/usr/local/mopon/card_data/0001_backup/813");
		dirs.add("/usr/local/mopon/card_data/0001_backup/817");
		dirs.add("/usr/local/mopon/card_data/0001_backup/818");
		dirs.add("/usr/local/mopon/card_data/0001_backup/823");
		dirs.add("/usr/local/mopon/card_data/0001_backup/824");
		dirs.add("/usr/local/mopon/card_data/0001_backup/825");
		dirs.add("/usr/local/mopon/card_data/0001_backup/827");
		dirs.add("/usr/local/mopon/card_data/0001_backup/831");
		dirs.add("/usr/local/mopon/card_data/0001_backup/832");
		dirs.add("/usr/local/mopon/card_data/0001_backup/833");
		dirs.add("/usr/local/mopon/card_data/0001_backup/834");
		dirs.add("/usr/local/mopon/card_data/0001_backup/835");
		dirs.add("/usr/local/mopon/card_data/0001_backup/837");
		dirs.add("/usr/local/mopon/card_data/0001_backup/839");
		dirs.add("/usr/local/mopon/card_data/0001_backup/840");
		dirs.add("/usr/local/mopon/card_data/0001_backup/841");
		dirs.add("/usr/local/mopon/card_data/0001_backup/844");
		dirs.add("/usr/local/mopon/card_data/0001_backup/845");
		dirs.add("/usr/local/mopon/card_data/0001_backup/851");
		dirs.add("/usr/local/mopon/card_data/0001_backup/854");
		dirs.add("/usr/local/mopon/card_data/0001_backup/855");
		dirs.add("/usr/local/mopon/card_data/0001_backup/856");
		dirs.add("/usr/local/mopon/card_data/0001_backup/858");
		dirs.add("/usr/local/mopon/card_data/0001_backup/859");
		dirs.add("/usr/local/mopon/card_data/0001_backup/861");
		dirs.add("/usr/local/mopon/card_data/0001_backup/862");
		dirs.add("/usr/local/mopon/card_data/0001_backup/863");
		dirs.add("/usr/local/mopon/card_data/0001_backup/865");
		dirs.add("/usr/local/mopon/card_data/0001_backup/866");
		dirs.add("/usr/local/mopon/card_data/0001_backup/869");
		dirs.add("/usr/local/mopon/card_data/0001_backup/870");
		dirs.add("/usr/local/mopon/card_data/0001_backup/872");
		dirs.add("/usr/local/mopon/card_data/0001_backup/874");
		dirs.add("/usr/local/mopon/card_data/0001_backup/875");
		dirs.add("/usr/local/mopon/card_data/0001_backup/880");
		dirs.add("/usr/local/mopon/card_data/0001_backup/883");
		dirs.add("/usr/local/mopon/card_data/0001_backup/884");
		dirs.add("/usr/local/mopon/card_data/0001_backup/885");
		dirs.add("/usr/local/mopon/card_data/0001_backup/886");
		dirs.add("/usr/local/mopon/card_data/0001_backup/890");
		dirs.add("/usr/local/mopon/card_data/0001_backup/891");
		dirs.add("/usr/local/mopon/card_data/0001_backup/897");
		dirs.add("/usr/local/mopon/card_data/0001_backup/898");
		dirs.add("/usr/local/mopon/card_data/0001_backup/899");
		dirs.add("/usr/local/mopon/card_data/0001_backup/901");
		dirs.add("/usr/local/mopon/card_data/0001_backup/902");
		dirs.add("/usr/local/mopon/card_data/0001_backup/905");
		dirs.add("/usr/local/mopon/card_data/0001_backup/906");
		dirs.add("/usr/local/mopon/card_data/0001_backup/907");
		dirs.add("/usr/local/mopon/card_data/0001_backup/910");
		dirs.add("/usr/local/mopon/card_data/0001_backup/912");
		dirs.add("/usr/local/mopon/card_data/0001_backup/913");
		dirs.add("/usr/local/mopon/card_data/0001_backup/917");
		dirs.add("/usr/local/mopon/card_data/0001_backup/921");
		dirs.add("/usr/local/mopon/card_data/0001_backup/922");
		dirs.add("/usr/local/mopon/card_data/0001_backup/923");
		dirs.add("/usr/local/mopon/card_data/0001_backup/924");
		dirs.add("/usr/local/mopon/card_data/0001_backup/925");
		dirs.add("/usr/local/mopon/card_data/0001_backup/926");
		dirs.add("/usr/local/mopon/card_data/0001_backup/931");
		dirs.add("/usr/local/mopon/card_data/0001_backup/938");
		dirs.add("/usr/local/mopon/card_data/0001_backup/939");
		return dirs;
	}
}
